Load libraries
library(tidyverse) # data manipulation
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.4 ✔ readr 2.1.4
## ✔ forcats 1.0.0 ✔ stringr 1.5.1
## ✔ ggplot2 3.5.1 ✔ tibble 3.2.1
## ✔ lubridate 1.9.2 ✔ tidyr 1.3.1
## ✔ purrr 1.0.2
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(ggpubr) # producing data exploratory plots
library(modelsummary) # descriptive data
## `modelsummary` 2.0.0 now uses `tinytable` as its default table-drawing
## backend. Learn more at: https://vincentarelbundock.github.io/tinytable/
##
## Revert to `kableExtra` for one session:
##
## options(modelsummary_factory_default = 'kableExtra')
## options(modelsummary_factory_latex = 'kableExtra')
## options(modelsummary_factory_html = 'kableExtra')
##
## Silence this message forever:
##
## config_modelsummary(startup_message = FALSE)
library(glmmTMB) # running generalised mixed models
library(DHARMa) # model diagnostics
## This is DHARMa 0.4.6. For overview type '?DHARMa'. For recent changes, type news(package = 'DHARMa')
library(performance) # model diagnostics
library(ggeffects) # partial effect plots
library(car) # running Anova on model
## Loading required package: carData
##
## Attaching package: 'car'
##
## The following object is masked from 'package:dplyr':
##
## recode
##
## The following object is masked from 'package:purrr':
##
## some
Import data
df_adults <- read_csv("resp_results_adults.csv")
df_jresp <- read_csv("resp_results_juveniles.csv")
Data manipulation
Adults
df_adults_cleaned <- df_adults |>
mutate(FISH_ID = factor(FISH_ID),
Sex = factor(Sex),
Population = factor(Population),
Tank = factor(Tank),
Chamber = factor(Chamber),
System =factor(System),
Temperature =factor(Temperature),
True_resting=factor(True_resting))
df_males <- df_adults_cleaned |>
filter(Sex == "M")
df_females <- df_adults_cleaned |>
filter(Sex == "F")
df_adults_cleaned2 <- df_males |>
full_join(select(df_females, c("Tank","Temperature","Mass","Resting","Max","AAS","FISH_ID","Sex")), by="Tank") |>
mutate(Temperature.x = coalesce(Temperature.x, Temperature.y),
FISH_ID.x = coalesce(FISH_ID.x, FISH_ID.y),
Sex.x = coalesce(Sex.x, Sex.y),
Resting.midpoint = (Resting.x+Resting.y)/2,
Max.midpoint = (Max.x+Max.y)/2,
AAS.midpoint = (AAS.x+AAS.y)/2)
Juveniles
df_jresp$Population <- fct_collapse(df_jresp$Population,
`Vlassof cay`= c("Vlassof reef", "Vlassof", "Vlassof Cay", "Vlassof cay"),
`Arlington reef` = c("Arlington reef","Arlginton reef"))
df_jresp$Female <- fct_collapse(df_jresp$Female,
`CARL359`= c("CARL359", "CARL59"))
df_jresp2 <- df_jresp |>
unite("F0", c("Male","Female"), sep="_", remove=FALSE) |>
mutate(across(1:7, factor),
Temperature = factor(Temperature),
True_resting = factor(True_resting))
#df_jresp2_rest <- df_jresp2 |>
#filter(True_resting == "Y")
Merging dataframes
temp1a <- df_jresp2 |>
mutate(FISH_ID.x = Male)
temp1b <- df_jresp2 |>
mutate(FISH_ID.y = Female)
temp2a <- temp1a |>
left_join(select(df_adults_cleaned2, c("FISH_ID.x",
"Sex.x",
"Resting.x",
"Max.x",
"AAS.x",
"Mass.x")),
by="FISH_ID.x")
temp2b <- temp1b |>
left_join(select(df_adults_cleaned2, c("FISH_ID.y",
"Sex.y",
"Resting.y",
"Max.y",
"AAS.y",
"Mass.y")),
by="FISH_ID.y")
df_merged <- temp2a |>
left_join(select(temp2b, c("Clutch","Replicate",
"FISH_ID.y",
"Resting.y",
"Max.y",
"AAS.y",
"Mass.y")),
by=c("Clutch","Replicate"))
df <- df_merged |>
mutate(Resting_MALE =Resting.x,
Max_MALE =Max.x,
AAS_MALE =AAS.x,
Mass_MALE =Mass.x,
FISH_ID.y =FISH_ID.x,#makes more sense for males to be .y instead of .x
FISH_ID.x =FISH_ID.x,
Resting_FEMALE =Resting.y,
Max_FEMALE =Max.y,
AAS_FEMALE =AAS.y,
Mass_FEMALE =Mass.y) |>
mutate(Resting_MID =(Resting_MALE+Resting_FEMALE)/2,
Max_MID =(Max_MALE+Max_FEMALE)/2,
AAS_MID =(AAS_MALE+AAS_FEMALE)/2) # easier to do it again
Exploratory analysis
Offspring-Male
plot1 <- ggplot(df, aes(x=Resting_MALE, y=Resting, color=Temperature)) +
stat_smooth(method = "lm") +
geom_point(alpha=0.1) +
ggtitle("Offspring-male relationship") +
xlab("") +
ylab("Resting (parental-male)") +
theme_classic() +
theme(legend.position = 'none')
plot2 <- ggplot(df, aes(x=Max_MALE, y=Max, color=Temperature)) +
stat_smooth(method = "lm") +
geom_point(alpha=0.1) +
ggtitle("Offspring-male relationship") +
xlab("") +
ylab("Max (parental-male)") +
theme_classic() +
theme(legend.position = 'none')
plot3 <- ggplot(df, aes(x=AAS_MALE, y=AAS, color=Temperature)) +
stat_smooth(method = "lm") +
geom_point(alpha=0.1) +
ggtitle("Offspring-male relationship") +
xlab("") +
ylab("AAS (parental-male)") +
theme_classic() +
theme(legend.position = 'none')
plot4 <- ggplot(df, aes(x=Resting_MALE, y=Resting, color=Temperature)) +
stat_smooth(method = "lm") +
#geom_point(alpha=0.1) +
ggtitle("Offspring-male relationship") +
xlab("Resting (offspring)") +
ylab("Resting (parental-male)") +
theme_classic() +
theme(legend.position = "bottom")
plot5 <- ggplot(df, aes(x=Max_MALE, y=Max, color=Temperature)) +
stat_smooth(method = "lm") +
#geom_point(alpha=0.1) +
ggtitle("Offspring-male relationship") +
xlab("Max (offspring)") +
ylab("Max (parental-male)") +
theme_classic() +
theme(legend.position = 'none')
plot6 <- ggplot(df, aes(x=AAS_MALE, y=AAS, color=Temperature)) +
stat_smooth(method = "lm") +
#geom_point(alpha=0.1) +
ggtitle("Offspring-male relationship") +
xlab("AAS (offspring)") +
ylab("AAS (parental-male)") +
theme_classic() +
theme(legend.position = 'none')
ggarrange(plot1, plot2, plot3,
plot4, plot5, plot6,
ncol = 3,
nrow = 3)

Offspring-Female
plot1 <- ggplot(df, aes(x=Resting_FEMALE, y=Resting, color=Temperature)) +
stat_smooth(method = "lm") +
geom_point(alpha=0.1) +
ggtitle("Offspring-female relationship") +
xlab("") +
ylab("Resting (parental-female)") +
theme_classic() +
theme(legend.position = 'none')
plot2 <- ggplot(df, aes(x=Max_FEMALE, y=Max, color=Temperature)) +
stat_smooth(method = "lm") +
geom_point(alpha=0.1) +
ggtitle("Offspring-female relationship") +
xlab("") +
ylab("Max (parental-female)") +
theme_classic() +
theme(legend.position = 'none')
plot3 <- ggplot(df, aes(x=AAS_FEMALE, y=AAS, color=Temperature)) +
stat_smooth(method = "lm") +
geom_point(alpha=0.1) +
ggtitle("Offspring-female relationship") +
xlab("") +
ylab("AAS (parental-female)") +
theme_classic() +
theme(legend.position = 'none')
plot4 <- ggplot(df, aes(x=Resting_FEMALE, y=Resting, color=Temperature)) +
stat_smooth(method = "lm") +
#geom_point(alpha=0.1) +
ggtitle("Offspring-female relationship") +
xlab("Resting (offspring)") +
ylab("Resting (parental-female)") +
theme_classic() +
theme(legend.position = "bottom")
plot5 <- ggplot(df, aes(x=Max_FEMALE, y=Max, color=Temperature)) +
stat_smooth(method = "lm") +
#geom_point(alpha=0.1) +
ggtitle("Offspring-female relationship") +
xlab("Max (offspring)") +
ylab("Max (parental-female)") +
theme_classic() +
theme(legend.position = 'none')
plot6 <- ggplot(df, aes(x=AAS_FEMALE, y=AAS, color=Temperature)) +
stat_smooth(method = "lm") +
#geom_point(alpha=0.1) +
ggtitle("Offspring-female relationship") +
xlab("AAS (offspring)") +
ylab("AAS (parental-female)") +
theme_classic() +
theme(legend.position = 'none')
ggarrange(plot1, plot2, plot3,
plot4, plot5, plot6,
ncol = 3,
nrow = 3)

Offspring-Midpoint
plot1 <- ggplot(df, aes(x=Resting_MID, y=Resting, color=Temperature)) +
stat_smooth(method = "lm") +
geom_point(alpha=0.1) +
ggtitle("Offspring-midpoint relationship") +
xlab("") +
ylab("Resting (parental-midpoint)") +
theme_classic() +
theme(legend.position = 'none')
plot2 <- ggplot(df, aes(x=Max_MID, y=Max, color=Temperature)) +
stat_smooth(method = "lm") +
geom_point(alpha=0.1) +
ggtitle("Offspring-midpoint relationship") +
xlab("") +
ylab("Max (parental-midpoint)") +
theme_classic() +
theme(legend.position = 'none')
plot3 <- ggplot(df, aes(x=AAS_MID, y=AAS, color=Temperature)) +
stat_smooth(method = "lm") +
geom_point(alpha=0.1) +
ggtitle("Offspring-midpoint relationship") +
xlab("") +
ylab("AAS (parental-midpoint)") +
theme_classic() +
theme(legend.position = 'none')
plot4 <- ggplot(df, aes(x=Resting_MID, y=Resting, color=Temperature)) +
stat_smooth(method = "lm") +
#geom_point(alpha=0.1) +
ggtitle("Offspring-midpoint relationship") +
xlab("Resting (offspring)") + ylab("Resting (parental-midpoint)") +
theme_classic() +
theme(legend.position = 'none')
plot5 <- ggplot(df, aes(x=Max_MID, y=Max, color=Temperature)) +
stat_smooth(method = "lm") +
#geom_point(alpha=0.1) +
ggtitle("Offspring-midpoint relationship") +
xlab("Max (offspring)") + ylab("Max (parental-midpoint)") +
theme_classic() +
theme(legend.position = 'none')
plot6 <- ggplot(df, aes(x=AAS_MID, y=AAS, color=Temperature)) +
stat_smooth(method = "lm") +
#geom_point(alpha=0.1) +
ggtitle("Offspring-midpoint relationship") +
xlab("AAS (offspring)") + ylab("AAS (parental-midpoint)") +
theme_classic() +
theme(legend.position = 'none')
ggarrange(plot1, plot2, plot3,
plot4, plot5, plot6,
ncol = 3,
nrow = 3,
common.legend = TRUE)

Descriptive statistics
Juveniles - overview
Overview
tinytable_7chcwvmk810aswv4s5md
| Population |
27 |
28.5 |
30 |
| Arlington reef |
60 |
43 |
53 |
| Pretty patches |
26 |
21 |
34 |
| Sudbury reef |
27 |
15 |
16 |
| Vlassof cay |
26 |
10 |
28 |
datasummary(Factor(F0) ~ Factor(Temperature),
data = df,
fmt = "%.0f")
tinytable_yltjnor6oqd5ojomkhfl
| F0 |
27 |
28.5 |
30 |
| CARL217_CARL226 |
0 |
8 |
0 |
| CARL218_CARL222 |
0 |
0 |
13 |
| CARL230_CARL235 |
14 |
0 |
0 |
| CARL233_CARL215 |
0 |
0 |
8 |
| CARL237_CARL219 |
10 |
0 |
0 |
| CARL241_CARL239 |
15 |
0 |
0 |
| CARL249_CARL360 |
0 |
0 |
16 |
| CARL335_CARL359 |
0 |
14 |
0 |
| CARL338_CARL345 |
0 |
8 |
0 |
| CARL344_CARL370 |
0 |
0 |
16 |
| CARL354_CARL355 |
21 |
0 |
0 |
| CARL367_CARL363 |
0 |
7 |
0 |
| CARL369_CARL349 |
0 |
6 |
0 |
| CPRE189_CPRE202 |
0 |
0 |
15 |
| CPRE372_CPRE209 |
14 |
0 |
0 |
| CPRE375_CPRE377 |
12 |
0 |
0 |
| CPRE391_CPRE390 |
0 |
0 |
6 |
| CPRE447_CPRE452 |
0 |
0 |
13 |
| CPRE453_CPRE459 |
0 |
7 |
0 |
| CPRE521_CPRE524 |
0 |
7 |
0 |
| CPRE550_CPRE533 |
0 |
7 |
0 |
| CSUD002_CSUD213 |
0 |
8 |
0 |
| CSUD009_CSUD212 |
14 |
0 |
0 |
| CSUD013_CSUD017 |
13 |
0 |
0 |
| CSUD016_CSUD078 |
0 |
7 |
0 |
| CSUD312_CSUD304 |
0 |
0 |
16 |
| CVLA089_CVLA059 |
0 |
0 |
7 |
| CVLA098_CVLA049 |
0 |
10 |
0 |
| CVLA102_CVLA466 |
6 |
0 |
0 |
| CVLA106_CVLA091 |
0 |
0 |
15 |
| CVLA468_CVLA477 |
13 |
0 |
0 |
| CVLA486_CVLA463 |
7 |
0 |
0 |
| CVLA498_CVLA493 |
0 |
0 |
6 |
Juveniles
Resting oxygen uptake
tinytable_xr0dj0umx5thhu0oanzt
| Temperature |
NUnique |
mean |
median |
min |
max |
sd |
Histogram |
| 27 |
135 |
0.21 |
0.21 |
0.08 |
0.64 |
0.07 |
▃▆▇▅▁▁ |
| 28.5 |
89 |
0.23 |
0.23 |
0.09 |
0.47 |
0.08 |
▂▄▆▆▇▄▁▁ ▁ |
| 30 |
131 |
0.23 |
0.23 |
0.06 |
0.40 |
0.07 |
▁▂▃▆▇▅▆▄▁▁ |
Maximum oxygen uptake
tinytable_yv88hrtaag6la1eeg5en
| Temperature |
NUnique |
mean |
median |
min |
max |
sd |
Histogram |
| 27 |
132 |
0.58 |
0.55 |
0.27 |
1.66 |
0.19 |
▄▇▆▃▁ |
| 28.5 |
85 |
0.65 |
0.64 |
0.24 |
1.08 |
0.18 |
▂▄▇▇▇▃▃▂▂ |
| 30 |
130 |
0.65 |
0.64 |
0.16 |
1.29 |
0.19 |
▂▃▇▅▆▃▁ |
Absolute aerobic scope
tinytable_rxgj8wyjt69gq0og79xt
| Temperature |
NUnique |
mean |
median |
min |
max |
sd |
Histogram |
| 27 |
128 |
0.37 |
0.34 |
0.14 |
1.02 |
0.14 |
▃▇▇▄▃▂ |
| 28.5 |
85 |
0.42 |
0.39 |
0.10 |
0.79 |
0.15 |
▁▃▅▇▄▃▅▃▁▁ |
| 30 |
130 |
0.42 |
0.41 |
0.09 |
0.99 |
0.15 |
▁▄▆▅▇▃▁ |
Adults - overview
Overview
datasummary(Factor(Population) ~ Factor(Temperature),
data = df_adults_cleaned,
fmt = "%.0f")
tinytable_0s3fznmoj2nflev21c0n
| Population |
27 |
28.5 |
30 |
| Arlington reef |
8 |
7 |
4 |
| Pretty patches |
4 |
6 |
4 |
| Sudbury reef |
4 |
3 |
2 |
| Vlassof cay |
6 |
2 |
5 |
datasummary(Factor(Population) ~ Factor(Temperature)*Factor(Sex),
data = df_adults_cleaned,
fmt = "%.0f")
tinytable_f2h3v91ssusezw6xhxik
| |
27 |
28.5 |
30 |
| Population |
F |
M |
F |
M |
F |
M |
| Arlington reef |
4 |
4 |
2 |
5 |
2 |
2 |
| Pretty patches |
2 |
2 |
3 |
3 |
3 |
1 |
| Sudbury reef |
2 |
2 |
1 |
2 |
1 |
1 |
| Vlassof cay |
3 |
3 |
1 |
1 |
3 |
2 |
Pairs
datasummary(Factor(Population)*Factor(Temperature.x) ~ AAS.midpoint*(NUnique),
data = df_adults_cleaned2,
fmt = "%.0f")
tinytable_ux9qgpxngjjbqtbhd8gw
| Population |
Temperature.x |
NUnique |
| Arlington reef |
27 |
3 |
| |
28.5 |
2 |
| |
30 |
2 |
| Pretty patches |
27 |
2 |
| |
28.5 |
3 |
| |
30 |
1 |
| Sudbury reef |
27 |
2 |
| |
28.5 |
2 |
| |
30 |
1 |
| Vlassof cay |
27 |
3 |
| |
28.5 |
1 |
| |
30 |
2 |
Adults
Resting oxygen uptake
tinytable_n67i6zke3ohl40m8yvhu
| Temperature |
NUnique |
mean |
median |
min |
max |
sd |
Histogram |
| 27 |
22 |
6.29 |
6.06 |
3.82 |
10.09 |
1.56 |
▂▂▃▇▂▂▁▁▁▁ |
| 28.5 |
18 |
6.49 |
6.96 |
4.35 |
8.49 |
1.45 |
▇▂▅▂▃▃▅▃ |
| 30 |
15 |
7.29 |
7.20 |
5.14 |
9.15 |
1.46 |
▅▂▇▂▂▂▇▇ |
Maximum oxygen uptake
tinytable_iiwz46gzou1vobdpl1b9
| Temperature |
NUnique |
mean |
median |
min |
max |
sd |
Histogram |
| 27 |
22 |
16.58 |
16.91 |
9.70 |
22.06 |
3.36 |
▃▃▅▅▃▃▅▇▂ |
| 28.5 |
18 |
17.09 |
17.23 |
11.04 |
28.39 |
3.94 |
▅▂▅▇▇▃▂ |
| 30 |
15 |
16.48 |
16.83 |
11.78 |
21.24 |
2.82 |
▂▃▂▃▇▂▂▃▂ |
Absolute aerobic scope
tinytable_gisw6et1art0kzaoixk3
| Temperature |
NUnique |
mean |
median |
min |
max |
sd |
Histogram |
| 27 |
22 |
10.29 |
10.26 |
3.85 |
16.28 |
3.14 |
▃▁▄▇▃▆▃▃▁ |
| 28.5 |
18 |
10.59 |
9.66 |
6.11 |
20.44 |
3.66 |
▅▅▇▇▃▂▂ |
| 30 |
15 |
9.19 |
9.16 |
4.36 |
12.77 |
2.91 |
▃▂▅▂▂▂▃▇ |
Relationships
Offspring-Male
Fit model [random factors]
Models
model1 <- glmmTMB(Resting ~ (1|Clutch),
family="gaussian",
data = df)
model2 <- glmmTMB(Resting ~ (1|Clutch) + (1|Population),
family="gaussian",
data = df)
model3 <- glmmTMB(Resting ~ (1|Clutch) + (1|Chamber),
family="gaussian",
data = df)
model4 <- glmmTMB(Resting ~ (1|Clutch) + (1|Population) + (1|Chamber),
family="gaussian",
data = df)
Model selection
AIC(model1, model2, model3, model4, k=2)
BIC(model1, model2, model3, model4)
Model1 performs the best therefore only Clutch will be used as a
random factor in future models
Fit model [fixed factors]
After figuring out which random factors will be incorporated into the
model we will start to examine out fixed factors. Some fixed factors
such as Resting_(FE)MALE and
TEMPERATURE will be essential to answering questions we
have around heritability. Another factor that will be included is
Dry_mass - which it should be pointed out in this
experiment refers to the mass of fish after they were blotted dry with
paper towel rather than completely dried out. Larger fish consume more
oxygen, therefore, we need to account for this known relationship within
our model. Out model will look something like this:
Resting ~ Resting_MALE*Temprature + scale(Dry_mass)
If we had alternative hypotheses to test would would do so at this
stage. But in this instance the experiment was designed to answer a
specific question via limiting potential covariates.
model1.1 <- glmmTMB(Resting ~ Resting_MALE*Temperature+scale(Dry_mass) + (1|Clutch),
family="gaussian",
data=df)
Great now lets check how out model performed via model validation
techniques
Model validation
To check out model performance we will be using two different
packages that perform model diagnositics. The packages used here are
just examples, there are other packages out there that can provide the
same function.
DHARMa
model1.1 |>
simulateResiduals(plot=TRUE)

## Object of Class DHARMa with simulated residuals based on 250 simulations with refit = FALSE . See ?DHARMa::simulateResiduals for help.
##
## Scaled residual values: 0.148 0.276 0.048 0.008 0.424 0.48 0.14 0.364 0.48 0.216 0.28 0.136 0.288 0.052 0.136 0.112 0.424 0.524 0.092 0.04 ...
model1.1 |>
testResiduals(plot=TRUE)

## $uniformity
##
## Asymptotic one-sample Kolmogorov-Smirnov test
##
## data: simulationOutput$scaledResiduals
## D = 0.040686, p-value = 0.6975
## alternative hypothesis: two-sided
##
##
## $dispersion
##
## DHARMa nonparametric dispersion test via sd of residuals fitted vs.
## simulated
##
## data: simulationOutput
## dispersion = 1.0047, p-value = 0.992
## alternative hypothesis: two.sided
##
##
## $outliers
##
## DHARMa outlier test based on exact binomial test with approximate
## expectations
##
## data: simulationOutput
## outliers at both margin(s) = 2, observations = 303, p-value = 1
## alternative hypothesis: true probability of success is not equal to 0.007968127
## 95 percent confidence interval:
## 0.0008003725 0.0236391643
## sample estimates:
## frequency of outliers (expected: 0.00796812749003984 )
## 0.00660066
## $uniformity
##
## Asymptotic one-sample Kolmogorov-Smirnov test
##
## data: simulationOutput$scaledResiduals
## D = 0.040686, p-value = 0.6975
## alternative hypothesis: two-sided
##
##
## $dispersion
##
## DHARMa nonparametric dispersion test via sd of residuals fitted vs.
## simulated
##
## data: simulationOutput
## dispersion = 1.0047, p-value = 0.992
## alternative hypothesis: two.sided
##
##
## $outliers
##
## DHARMa outlier test based on exact binomial test with approximate
## expectations
##
## data: simulationOutput
## outliers at both margin(s) = 2, observations = 303, p-value = 1
## alternative hypothesis: true probability of success is not equal to 0.007968127
## 95 percent confidence interval:
## 0.0008003725 0.0236391643
## sample estimates:
## frequency of outliers (expected: 0.00796812749003984 )
## 0.00660066
Partial effect plots
model1.1 |> ggemmeans(~Resting_MALE|Temperature) |>
plot(add.data =FALSE)

Model investigations
summary
## Family: gaussian ( identity )
## Formula:
## Resting ~ Resting_MALE * Temperature + scale(Dry_mass) + (1 | Clutch)
## Data: df
##
## AIC BIC logLik deviance df.resid
## -942.0 -908.5 480.0 -960.0 294
##
## Random effects:
##
## Conditional model:
## Groups Name Variance Std.Dev.
## Clutch (Intercept) 0.0004794 0.02190
## Residual 0.0021525 0.04639
## Number of obs: 303, groups: Clutch, 45
##
## Dispersion estimate for gaussian family (sigma^2): 0.00215
##
## Conditional model:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 0.189813 0.025443 7.460 8.63e-14 ***
## Resting_MALE 0.003188 0.003853 0.827 0.408
## Temperature28.5 -0.006513 0.045948 -0.142 0.887
## Temperature30 0.103654 0.049952 2.075 0.038 *
## scale(Dry_mass) 0.048960 0.003202 15.290 < 2e-16 ***
## Resting_MALE:Temperature28.5 0.003369 0.007313 0.461 0.645
## Resting_MALE:Temperature30 -0.010211 0.007444 -1.372 0.170
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
confint
## 2.5 % 97.5 % Estimate
## (Intercept) 0.139945198 0.239680024 0.189812611
## Resting_MALE -0.004363672 0.010740654 0.003188491
## Temperature28.5 -0.096569126 0.083543914 -0.006512606
## Temperature30 0.005749589 0.201557639 0.103653614
## scale(Dry_mass) 0.042683965 0.055236062 0.048960013
## Resting_MALE:Temperature28.5 -0.010964925 0.017702957 0.003369016
## Resting_MALE:Temperature30 -0.024799620 0.004378381 -0.010210620
## Std.Dev.(Intercept)|Clutch 0.015283839 0.031368998 0.021896089
r-squared
model1.1 |> r2_nakagawa()
## # R2 for Mixed Models
##
## Conditional R2: 0.578
## Marginal R2: 0.484
Pairwise comparisons
emmeans [Temperature]